package code1.string;


/**
 * 原题连接：https://leetcode.cn/problems/ti-huan-kong-ge-lcof/
 */
public class Offer05 {
    //请实现一个函数，把字符串 s 中的每个空格替换成"%20"。
    public String replaceSpace(String s) {
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<s.length();i++){
            if(s.charAt(i)==' '){
                sb.append("%20");
            }else{
                sb.append(s.charAt(i));
            }
        }
        return sb.toString();
    }

    //双指针法
    public String replaceSpace2(String s) {
        char[] str = s.toCharArray();
        int before=str.length;
        //统计空格数
        int count=0;
        for(int i=0;i<str.length;i++){
            if(str[i]==' '){
                count++;
            }
        }
        //扩充数组空间，从后往前进行操作
        int after=str.length+count*2;
        char[] str2=new char[after];
        for(int i=after-1,j=before-1;i>=0;i--,j--){
            if(str[j]!=' '){
                str2[i]=str[j];
            }else{
                str2[i]='0';
                str2[--i]='2';
                str2[--i]='%';
            }
        }
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<str2.length;i++){
            sb.append(str2[i]);
        }
        return sb.toString();
    }

}
